import os

import cv2


def video2pic0(pro_frames_dir, videopath):
    """
        将视频或动图的每帧提取出来
    :param pro_frames_dir: 原型每帧图片文件夹
    :param videopath: 视频路径
    :return: None
    """
    # 在当前目录下新建文件夹
    if not os.path.exists(pro_frames_dir):
        os.makedirs(pro_frames_dir)

    vc = cv2.VideoCapture(videopath)
    c = 0
    # 判断载入的视频是否可以打开
    ret = vc.isOpened()
    # 循环读取视频帧
    while ret:
        c += 1
        # 进行单张图片的读取,ret的值为True或者Flase,frame表示读入的图片
        ret, frame = vc.read()
        if ret:
            # 存储为图像
            cv2.imwrite(f'{pro_frames_dir}/{c}.jpg', frame)
            print(f'生成{pro_frames_dir}/{c}.jpg')
        else:
            break
    # 视频释放
    vc.release()

    print("视频按各帧提取完成！")


if __name__ == "__main__":
    videopath = 'fumo/fumo.gif'
    video2pic0('fumo/fumo_pro_frames', videopath)
